
/*===============================================
	要完成四个功能：
	1. 已知坐标点，定位到图上		[ok]
	2. 已知坐标点，获取当前地理位置	[ok]
	3. 已知地理位置，获取实际坐标点	[ok]	
		<两种方式: 需要mark点,不需要mark点>
===============================================*/

/*===============================================
	MapABC坐标的明码与密码的转换
===============================================*/
var __keys__ = [[0, 2, 1, 2, 8, 9, 4, 1, 7, 2, 5, 3, 9], [0, 3, 2, 2, 9, 5, 8, 2, 6, 8, 4, 6, 3], [1, 5, 2, 7, 1, 4, 7, 2, 4, 1, 4, 3, 0], [0, 7, 8, 3, 4, 9, 0, 6, 7, 7, 4, 4, 2], [0, 2, 1, 8, 4, 9, 3, 2, 3, 1, 5, 7, 8], [0, 0, 9, 5, 4, 7, 3, 0, 8, 7, 5, 2, 8], [0, 1, 5, 1, 1, 8, 2, 7, 1, 9, 1, 3, 5], [0, 5, 2, 5, 6, 0, 3, 4, 6, 7, 1, 3, 5], [1, 3, 2, 1, 8, 1, 8, 3, 7, 9, 2, 7, 0], [1, 2, 7, 7, 4, 3, 1, 5, 5, 0, 6, 4, 4], [1, 5, 2, 8, 9, 2, 5, 9, 6, 7, 3, 3, 5], [1, 7, 9, 4, 5, 0, 9, 4, 9, 6, 1, 9, 9], [0, 6, 8, 3, 3, 6, 3, 5, 2, 0, 0, 9, 1], [1, 1, 1, 4, 7, 8, 6, 9, 6, 8, 8, 4, 6], [0, 5, 2, 1, 2, 5, 7, 0, 0, 4, 7, 4, 1], [0, 7, 6, 4, 2, 3, 9, 0, 7, 8, 5, 6, 7], [0, 1, 7, 6, 0, 5, 4, 7, 6, 7, 7, 5, 7], [0, 5, 2, 9, 8, 1, 7, 8, 3, 8, 5, 4, 5], [0, 4, 3, 1, 2, 8, 3, 7, 0, 9, 4, 8, 8], [1, 0, 6, 7, 9, 4, 3, 5, 2, 9, 8, 7, 7], [1, 6, 4, 4, 6, 7, 1, 4, 4, 2, 6, 7, 5], [0, 8, 1, 7, 7, 5, 2, 6, 4, 3, 9, 7, 5], [1, 7, 0, 5, 6, 2, 5, 2, 7, 4, 6, 2, 8], [0, 4, 9, 2, 3, 0, 5, 4, 7, 8, 7, 0, 5], [1, 1, 0, 5, 1, 7, 2, 8, 7, 2, 6, 9, 3], [1, 4, 2, 3, 6, 1, 5, 3, 2, 0, 3, 6, 2], [1, 1, 6, 5, 1, 0, 6, 8, 9, 7, 1, 7, 9], [0, 6, 5, 4, 0, 7, 1, 7, 6, 2, 5, 4, 2], [1, 9, 8, 6, 6, 6, 8, 4, 5, 4, 0, 4, 0], [1, 2, 7, 1, 5, 0, 6, 8, 0, 1, 3, 7, 9], [1, 1, 6, 4, 9, 8, 6, 0, 6, 2, 1, 9, 8], [0, 0, 1, 9, 5, 3, 3, 9, 6, 7, 4, 1, 1], [0, 2, 8, 5, 7, 8, 6, 7, 3, 3, 1, 6, 4], [1, 8, 2, 5, 8, 4, 7, 6, 8, 8, 5, 7, 6], [0, 8, 3, 4, 9, 6, 1, 7, 8, 3, 0, 5, 5], [1, 3, 2, 6, 7, 4, 2, 8, 7, 4, 9, 6, 8], [1, 8, 8, 9, 3, 9, 1, 8, 5, 7, 2, 5, 0], [0, 5, 8, 3, 1, 8, 8, 0, 3, 9, 3, 8, 1], [1, 6, 0, 1, 1, 0, 3, 4, 3, 3, 3, 5, 9], [1, 0, 5, 1, 7, 9, 6, 2, 4, 6, 0, 3, 5], [1, 8, 2, 0, 9, 7, 1, 0, 5, 5, 8, 0, 6], [1, 8, 9, 6, 7, 3, 9, 4, 1, 9, 6, 6, 2], [0, 6, 0, 0, 8, 2, 6, 5, 9, 4, 1, 6, 2], [1, 7, 9, 7, 9, 4, 4, 2, 1, 1, 5, 7, 4], [1, 3, 0, 4, 3, 4, 6, 8, 6, 9, 1, 7, 0], [0, 1, 2, 3, 9, 4, 1, 8, 7, 2, 2, 9, 8], [1, 6, 5, 3, 2, 7, 6, 6, 9, 0, 0, 7, 7], [1, 6, 8, 4, 9, 7, 8, 0, 3, 6, 5, 4, 8], [0, 6, 6, 0, 9, 9, 4, 5, 5, 6, 8, 3, 7], [1, 0, 1, 3, 4, 0, 0, 1, 4, 8, 5, 7, 0], [1, 0, 2, 5, 8, 2, 2, 4, 8, 9, 7, 1, 6], [1, 4, 2, 6, 6, 8, 4, 5, 6, 6, 4, 5, 9], [1, 4, 4, 1, 7, 2, 0, 4, 6, 3, 3, 6, 7], [0, 2, 2, 3, 8, 0, 0, 8, 6, 0, 2, 1, 7], [0, 9, 4, 4, 8, 1, 2, 7, 3, 2, 6, 8, 0], [0, 9, 8, 4, 2, 1, 4, 5, 2, 4, 9, 5, 1], [0, 7, 2, 4, 7, 4, 3, 2, 4, 1, 5, 6, 9], [1, 1, 8, 4, 8, 8, 8, 4, 3, 4, 1, 2, 5], [0, 3, 2, 7, 5, 7, 0, 2, 7, 4, 5, 3, 5], [0, 3, 0, 4, 6, 6, 6, 5, 7, 2, 1, 9, 5], [1, 5, 6, 0, 1, 3, 2, 7, 3, 0, 9, 8, 6], [0, 5, 5, 1, 7, 1, 0, 7, 9, 0, 3, 5, 7], [0, 5, 4, 9, 7, 9, 7, 3, 8, 0, 1, 6, 3], [1, 9, 2, 7, 3, 7, 9, 4, 3, 9, 8, 8, 2], [0, 3, 1, 8, 9, 0, 9, 0, 4, 5, 5, 0, 9], [1, 8, 6, 1, 7, 7, 2, 4, 7, 9, 2, 0, 8], [0, 6, 1, 2, 7, 1, 4, 8, 4, 1, 1, 6, 0], [0, 3, 9, 8, 5, 5, 3, 0, 8, 7, 9, 3, 5], [0, 8, 4, 3, 7, 3, 1, 8, 2, 9, 1, 4, 7], [0, 1, 5, 3, 4, 0, 5, 5, 5, 8, 0, 7, 2], [0, 1, 7, 1, 8, 2, 1, 9, 8, 6, 1, 7, 0], [0, 7, 1, 6, 9, 7, 2, 7, 2, 4, 4, 3, 6], [0, 6, 2, 7, 2, 3, 4, 9, 3, 0, 1, 6, 3], [0, 2, 9, 1, 9, 9, 9, 1, 9, 5, 4, 4, 4], [0, 1, 8, 7, 0, 0, 5, 2, 1, 5, 7, 4, 6], [1, 9, 0, 8, 7, 3, 3, 5, 5, 4, 9, 0, 1], [1, 5, 8, 0, 1, 7, 0, 2, 3, 7, 3, 2, 9], [1, 3, 2, 0, 5, 2, 7, 5, 0, 2, 6, 8, 1], [0, 2, 7, 2, 3, 2, 2, 9, 6, 9, 4, 1, 6], [1, 6, 4, 7, 9, 6, 5, 9, 5, 8, 2, 7, 1], [1, 8, 1, 2, 6, 0, 2, 4, 0, 8, 0, 1, 6], [1, 6, 2, 4, 1, 2, 4, 1, 7, 2, 7, 0, 6], [0, 1, 8, 0, 5, 0, 4, 5, 5, 1, 0, 4, 7], [0, 8, 7, 6, 4, 3, 5, 5, 7, 8, 4, 9, 0], [0, 2, 7, 7, 0, 1, 6, 6, 1, 0, 9, 3, 5], [0, 7, 6, 9, 8, 3, 8, 6, 2, 9, 3, 7, 0], [1, 6, 6, 6, 0, 3, 0, 1, 0, 2, 5, 6, 1], [0, 0, 4, 5, 1, 0, 9, 4, 4, 9, 4, 0, 9], [0, 1, 6, 9, 4, 7, 5, 7, 8, 3, 5, 7, 0], [1, 2, 7, 1, 6, 6, 1, 5, 2, 8, 6, 3, 8], [1, 9, 1, 6, 7, 5, 1, 7, 4, 7, 6, 1, 8], [1, 7, 6, 7, 0, 2, 9, 6, 9, 8, 6, 7, 8], [0, 9, 8, 7, 3, 8, 1, 5, 2, 5, 2, 7, 5], [0, 7, 3, 5, 7, 9, 7, 6, 6, 9, 1, 7, 5], [1, 6, 7, 3, 4, 4, 7, 6, 2, 6, 6, 2, 3], [0, 1, 4, 2, 2, 8, 5, 0, 9, 2, 7, 3, 1], [0, 1, 4, 2, 1, 0, 0, 2, 1, 8, 9, 8, 3], [1, 7, 0, 8, 7, 9, 9, 6, 4, 8, 6, 2, 2], [1, 9, 3, 9, 9, 8, 7, 0, 8, 1, 1, 7, 3], [1, 0, 4, 3, 5, 8, 0, 4, 6, 5, 4, 5, 8], [0, 4, 8, 0, 5, 2, 3, 2, 3, 9, 4, 2, 3], [0, 7, 9, 0, 9, 7, 2, 7, 7, 0, 4, 8, 5], [1, 6, 5, 5, 3, 3, 2, 6, 1, 3, 4, 7, 1], [0, 2, 9, 0, 0, 2, 9, 1, 8, 8, 2, 8, 4], [1, 3, 2, 5, 0, 6, 2, 5, 3, 3, 6, 1, 1], [1, 9, 2, 9, 3, 3, 8, 9, 9, 7, 2, 3, 7], [1, 1, 8, 4, 0, 8, 2, 4, 8, 0, 0, 9, 2], [1, 5, 2, 6, 0, 6, 1, 3, 0, 4, 7, 3, 8], [1, 9, 3, 8, 1, 1, 7, 8, 6, 9, 0, 6, 8], [1, 3, 2, 7, 7, 2, 2, 4, 2, 5, 8, 3, 0], [1, 1, 1, 0, 7, 7, 3, 4, 7, 3, 6, 6, 8], [0, 9, 4, 2, 8, 9, 4, 8, 4, 3, 2, 5, 3], [0, 1, 0, 9, 2, 7, 2, 3, 9, 4, 5, 0, 8], [1, 0, 4, 5, 8, 4, 0, 0, 5, 2, 2, 1, 2], [0, 5, 0, 4, 5, 3, 2, 5, 4, 1, 3, 6, 9], [1, 3, 0, 2, 7, 8, 1, 7, 7, 3, 5, 5, 9], [1, 3, 7, 0, 0, 5, 8, 1, 7, 5, 6, 5, 2], [1, 8, 1, 9, 9, 9, 4, 8, 6, 0, 7, 7, 3], [0, 8, 3, 6, 2, 7, 4, 2, 1, 9, 1, 6, 8], [0, 4, 4, 4, 2, 6, 0, 4, 0, 1, 5, 1, 7], [1, 2, 7, 4, 7, 6, 6, 6, 3, 7, 7, 2, 9], [0, 9, 8, 9, 3, 3, 3, 9, 0, 7, 4, 2, 3], [0, 7, 6, 0, 9, 1, 7, 2, 4, 5, 8, 3, 3], [1, 6, 1, 5, 5, 3, 1, 3, 2, 1, 0, 5, 6], [0, 6, 2, 4, 1, 6, 6, 3, 4, 9, 2, 7, 0], [1, 6, 3, 2, 3, 6, 1, 7, 7, 5, 6, 7, 1], [1, 0, 4, 9, 2, 3, 3, 6, 2, 6, 9, 3, 2], [0, 3, 7, 3, 9, 1, 3, 9, 5, 8, 5, 8, 9], [1, 9, 0, 0, 3, 0, 9, 1, 2, 7, 8, 0, 3], [1, 0, 1, 2, 7, 7, 0, 0, 1, 8, 4, 1, 1], [0, 0, 5, 5, 9, 6, 9, 8, 1, 2, 1, 7, 2], [0, 1, 8, 7, 9, 0, 3, 5, 6, 3, 2, 9, 4], [1, 3, 1, 5, 7, 5, 0, 8, 5, 3, 2, 5, 0], [1, 1, 7, 3, 5, 0, 7, 7, 9, 6, 8, 9, 0], [0, 7, 7, 0, 9, 4, 2, 8, 8, 0, 2, 2, 0], [1, 6, 5, 8, 3, 1, 0, 9, 0, 2, 7, 2, 9], [1, 3, 5, 8, 4, 7, 6, 3, 1, 4, 3, 4, 7], [0, 8, 8, 7, 8, 2, 7, 0, 3, 9, 6, 2, 9], [1, 1, 6, 2, 6, 7, 5, 2, 5, 0, 8, 5, 5], [0, 9, 6, 7, 3, 0, 2, 3, 9, 5, 3, 7, 4], [1, 5, 2, 7, 3, 6, 0, 8, 3, 3, 9, 0, 3], [0, 3, 6, 8, 9, 1, 7, 7, 3, 8, 7, 3, 8], [0, 1, 2, 5, 4, 9, 8, 0, 3, 6, 4, 0, 4], [1, 2, 4, 1, 6, 8, 1, 5, 8, 3, 6, 4, 3], [1, 9, 3, 1, 0, 8, 4, 4, 0, 1, 6, 0, 8], [0, 4, 5, 1, 0, 2, 1, 7, 1, 6, 1, 3, 3], [0, 9, 5, 6, 8, 2, 2, 4, 0, 3, 9, 8, 1], [1, 9, 3, 5, 4, 3, 1, 2, 2, 2, 0, 8, 7], [0, 5, 6, 8, 1, 5, 7, 7, 8, 9, 4, 0, 6], [1, 0, 4, 6, 4, 6, 7, 4, 6, 0, 3, 6, 2], [1, 3, 3, 0, 2, 5, 3, 1, 9, 2, 3, 6, 8], [0, 6, 9, 6, 3, 6, 9, 6, 2, 1, 5, 0, 7], [1, 6, 5, 3, 0, 0, 0, 6, 2, 3, 8, 6, 0], [1, 0, 7, 1, 2, 0, 3, 0, 3, 0, 8, 8, 0], [0, 7, 1, 4, 3, 1, 8, 6, 7, 8, 1, 5, 4], [0, 6, 3, 5, 5, 4, 8, 9, 4, 8, 3, 1, 7], [0, 6, 4, 3, 1, 0, 7, 2, 9, 0, 5, 6, 7], [0, 6, 3, 7, 7, 0, 6, 8, 6, 7, 4, 6, 0], [0, 4, 2, 7, 2, 4, 1, 4, 6, 1, 8, 1, 7], [1, 1, 7, 9, 0, 7, 0, 5, 1, 8, 6, 3, 5], [1, 2, 0, 2, 7, 2, 7, 9, 1, 2, 7, 0, 3], [0, 3, 3, 6, 2, 0, 9, 1, 1, 0, 3, 5, 8], [1, 4, 0, 9, 9, 2, 5, 6, 5, 6, 8, 0, 5], [0, 3, 5, 3, 3, 3, 4, 6, 7, 5, 7, 0, 5], [0, 5, 8, 8, 5, 8, 5, 4, 7, 0, 5, 7, 3], [0, 5, 0, 7, 6, 4, 2, 7, 8, 3, 6, 1, 4], [0, 4, 7, 8, 6, 5, 3, 7, 7, 5, 7, 0, 7], [1, 3, 6, 5, 3, 0, 8, 5, 4, 9, 7, 7, 1], [1, 4, 8, 2, 8, 2, 8, 3, 4, 9, 4, 6, 7], [1, 4, 1, 6, 9, 4, 5, 7, 7, 4, 6, 7, 7], [0, 2, 8, 2, 3, 0, 7, 7, 1, 0, 1, 1, 0], [1, 2, 2, 4, 5, 4, 7, 1, 0, 1, 8, 6, 7], [0, 0, 7, 2, 4, 7, 2, 8, 2, 4, 4, 3, 9], [1, 9, 1, 3, 2, 4, 1, 3, 3, 7, 5, 6, 1], [1, 4, 7, 4, 6, 8, 6, 7, 4, 4, 1, 2, 8], [0, 1, 6, 7, 3, 9, 0, 4, 7, 2, 9, 6, 7], [0, 1, 3, 9, 1, 1, 1, 1, 6, 3, 0, 1, 1], [1, 2, 7, 0, 2, 0, 7, 9, 7, 2, 1, 5, 2], [0, 9, 1, 0, 4, 2, 8, 2, 2, 4, 2, 4, 0], [1, 1, 7, 9, 7, 9, 3, 0, 5, 3, 4, 5, 2], [0, 0, 7, 4, 3, 0, 8, 6, 7, 7, 7, 9, 6], [0, 7, 0, 4, 0, 6, 7, 6, 3, 2, 0, 7, 1], [0, 4, 8, 8, 0, 5, 3, 0, 7, 8, 4, 7, 9], [0, 6, 3, 3, 3, 6, 6, 3, 7, 0, 4, 8, 3], [0, 1, 2, 0, 6, 0, 3, 1, 0, 9, 9, 8, 0], [0, 7, 0, 3, 8, 2, 5, 0, 7, 5, 0, 0, 4], [1, 8, 8, 8, 2, 0, 6, 2, 5, 6, 2, 3, 2], [1, 6, 2, 5, 8, 0, 1, 9, 7, 3, 7, 6, 0], [0, 3, 6, 1, 9, 1, 6, 8, 2, 6, 5, 2, 5], [0, 3, 9, 7, 8, 9, 4, 5, 4, 8, 5, 5, 1], [1, 1, 5, 5, 2, 5, 3, 4, 5, 3, 5, 0, 9], [1, 0, 9, 4, 9, 6, 1, 7, 0, 0, 6, 0, 1], [0, 8, 4, 9, 9, 9, 3, 4, 1, 3, 5, 7, 7], [0, 7, 8, 0, 0, 3, 5, 5, 9, 4, 1, 8, 1], [1, 7, 3, 7, 6, 3, 2, 5, 6, 2, 7, 5, 0], [0, 0, 2, 6, 0, 6, 6, 2, 7, 6, 1, 6, 2], [1, 1, 6, 4, 7, 7, 9, 7, 0, 6, 2, 6, 6], [0, 2, 1, 1, 4, 7, 6, 8, 8, 8, 9, 4, 3], [0, 0, 8, 7, 5, 1, 9, 3, 1, 9, 8, 6, 0], [0, 3, 4, 4, 0, 7, 1, 8, 7, 2, 7, 9, 9], [1, 0, 4, 5, 3, 6, 0, 6, 6, 6, 4, 1, 5], [0, 9, 7, 9, 9, 5, 9, 2, 3, 0, 4, 6, 2], [1, 6, 5, 2, 7, 2, 1, 3, 5, 2, 5, 2, 1], [1, 9, 9, 4, 8, 6, 3, 7, 8, 3, 3, 0, 6], [0, 8, 2, 6, 6, 7, 8, 2, 1, 3, 2, 9, 2], [0, 4, 8, 1, 9, 2, 4, 8, 4, 5, 4, 6, 4], [1, 1, 7, 0, 7, 3, 5, 1, 4, 9, 5, 3, 1], [1, 7, 8, 8, 3, 5, 3, 1, 5, 7, 6, 1, 9], [1, 4, 5, 6, 5, 3, 2, 5, 3, 0, 3, 5, 5], [0, 0, 2, 1, 3, 8, 9, 1, 0, 9, 7, 6, 7], [0, 0, 7, 6, 1, 9, 1, 9, 5, 8, 9, 4, 0], [1, 5, 4, 4, 6, 8, 7, 3, 9, 9, 0, 7, 4], [1, 3, 0, 4, 8, 1, 2, 3, 9, 7, 1, 9, 5], [1, 2, 6, 1, 4, 6, 9, 4, 7, 1, 1, 2, 6], [0, 1, 6, 7, 5, 8, 3, 2, 7, 0, 4, 1, 1], [1, 6, 2, 7, 8, 7, 6, 8, 7, 2, 0, 3, 3], [0, 2, 1, 9, 2, 6, 7, 5, 9, 5, 2, 2, 2], [0, 5, 2, 0, 4, 7, 7, 3, 8, 1, 5, 0, 9], [1, 6, 5, 8, 6, 4, 0, 9, 6, 9, 0, 1, 8], [1, 2, 0, 8, 7, 9, 2, 4, 4, 0, 9, 8, 9], [1, 6, 5, 2, 0, 6, 1, 0, 4, 4, 1, 5, 8], [1, 5, 4, 2, 5, 6, 2, 5, 6, 2, 2, 9, 5], [1, 6, 9, 7, 2, 5, 1, 0, 6, 9, 1, 8, 1], [0, 0, 3, 9, 9, 0, 6, 7, 9, 5, 7, 4, 6], [1, 5, 8, 9, 9, 0, 6, 7, 9, 7, 9, 6, 1], [1, 3, 6, 4, 6, 3, 6, 8, 4, 5, 2, 8, 3], [0, 7, 4, 8, 4, 9, 7, 8, 0, 0, 1, 2, 2], [0, 4, 2, 9, 1, 3, 8, 8, 3, 0, 0, 9, 8], [1, 9, 0, 9, 2, 1, 2, 9, 3, 6, 5, 3, 2], [1, 1, 0, 2, 0, 5, 9, 9, 5, 4, 7, 8, 9], [1, 6, 0, 5, 9, 9, 1, 9, 0, 5, 4, 7, 1], [1, 0, 4, 0, 0, 3, 2, 4, 1, 6, 4, 6, 5], [1, 7, 3, 7, 3, 3, 7, 6, 1, 7, 7, 8, 6], [0, 9, 1, 7, 3, 5, 1, 8, 9, 3, 8, 6, 2], [1, 4, 9, 9, 3, 7, 5, 4, 4, 4, 4, 4, 0], [0, 3, 7, 7, 4, 3, 6, 1, 1, 3, 5, 1, 6], [0, 8, 5, 4, 3, 9, 3, 3, 1, 3, 4, 8, 1], [1, 6, 1, 9, 4, 6, 4, 6, 4, 5, 2, 1, 5], [1, 1, 1, 6, 8, 3, 9, 1, 1, 3, 0, 9, 9], [0, 5, 1, 6, 8, 4, 8, 8, 2, 4, 4, 9, 2], [0, 2, 3, 0, 1, 4, 2, 7, 1, 9, 9, 0, 6], [0, 8, 4, 2, 5, 1, 4, 9, 5, 2, 0, 4, 3], [0, 9, 1, 2, 5, 0, 6, 6, 5, 0, 3, 1, 8], [1, 7, 8, 7, 1, 7, 4, 6, 3, 3, 3, 3, 9], [0, 3, 7, 2, 9, 4, 1, 5, 4, 7, 2, 1, 0], [1, 2, 8, 1, 1, 6, 4, 7, 8, 2, 0, 5, 2], [1, 8, 3, 5, 4, 8, 0, 9, 7, 8, 0, 1, 8], [1, 7, 9, 9, 0, 4, 5, 7, 2, 9, 0, 1, 9], [0, 6, 6, 5, 6, 7, 0, 4, 0, 7, 8, 5, 1], [0, 6, 0, 6, 3, 1, 1, 5, 0, 9, 2, 2, 3], [1, 6, 3, 5, 6, 7, 1, 6, 6, 9, 7, 4, 9], [0, 9, 5, 9, 8, 2, 4, 3, 3, 2, 3, 5, 6], [0, 1, 6, 3, 8, 9, 9, 2, 8, 2, 5, 8, 6], [1, 4, 7, 6, 6, 5, 7, 3, 3, 3, 4, 1, 1], [1, 8, 2, 9, 0, 3, 8, 6, 8, 3, 3, 7, 3], [0, 2, 8, 4, 8, 5, 4, 8, 9, 5, 0, 5, 7]];
function getDecodeCoordinate(enLonLat) 
{
	//取编码坐标的后4位字符
	var last4cha = enLonLat.substring(enLonLat.length - 4, enLonLat.length);
	//将后4位字符转成对应的ASCII值
	var last4asc = [];
	for (var i = 0; i < last4cha.length; i++) 
	{
		last4asc.push(last4cha.charCodeAt(i));
	}
	//取4个数值的后两位，组成一个新的8位数字，代表key所在的索引值
	var keyposition = 0;
	keyposition |= last4asc[0] & 3;
	keyposition |= (last4asc[1] & 3) << 2;
	keyposition |= (last4asc[2] & 3) << 4;
	keyposition |= (last4asc[3] & 3) << 6;
	//根据索引值取对应的key，key是一个长度为13的数组
	var keys = __keys__[keyposition];
	//取编码坐标的去掉最后4位的所有字符
	var lonlat = enLonLat.substring(0, enLonLat.length - 4);
	//将所有字符转成对应的ASCII值
	var lonlatasc = [];
	for (var i = 0; i < lonlat.length; i++) 
	{
		lonlatasc.push(lonlat.charCodeAt(i));
	}
	//根据key的第一位。。。
	var key1 = keys[0];
	var fixed = 0;
	switch (key1) 
	{
	  case 0:	fixed = 23;	break;
	  case 1:	fixed = 53;	break;
	}

	//将所有的asc值进行处理
	for (var i = 0; i < lonlatasc.length; i++) 
	{
		lonlatasc[i] -= fixed;
		lonlatasc[i] -= keys[i + 1];
	}

	//将处理后的asc值转成对应的asc码
	var lonlatcha = [];
	for (var j = 0; j < lonlatasc.length; j++) 
	{
		lonlatcha.push(String.fromCharCode(lonlatasc[j]));
	}
	var deLonLat = lonlatcha.join("");
	return deLonLat;
}

function getEncodeCoordinate(MrY) 
{
	var xGH = 256;
	var AaZ = __keys__;
	var AtF = 13;
	var Cwv = parseInt(Math.random() * xGH);
	var FEf = AaZ[Cwv];
	var wcW = "" + MrY;
	var UZO = new Array();
	for (var i = 0; i < wcW.length; i++) 
	{
		UZO.push(wcW.charCodeAt(i));
	}
	var InJ = FEf[0];
	var KvR = 0;
	switch (InJ) 
	{
	  case 0:	KvR = 23;	break;
	  case 1:	KvR = 53;	break;
	}
	nHl = UZO.length;
	var i = 0;
	var eag = "";
	for (i = 0; i < UZO.length && i < FEf.length - 2; i++) 
	{
		UZO[i] += (parseInt(FEf[i + 1]) + parseInt(KvR));
		eag += String.fromCharCode(UZO[i]);
	}
	var mhc = new Array(4);
	for (var i = 0; i < mhc.length; i++) 
	{
		mhc[i] = (Math.random() * 10);
		mhc[i] += 70;
		mhc[i] = mhc[i] >> 2;
		mhc[i] = mhc[i] << 2;
	}
	mhc[0] = mhc[0] | Cwv & 3;
	mhc[1] = mhc[1] | (Cwv & 12) >> 2;
	mhc[2] = mhc[2] | (Cwv & 48) >> 4;
	mhc[3] = mhc[3] | (Cwv & 192) >> 6;
	eag += String.fromCharCode(mhc[0], mhc[1], mhc[2], mhc[3]);
	return eag;
}

/*===============================================
				MapABC Demo
===============================================*/
var m_oMark = null;
var m_oMap = null;
	
function getLngLat(oPoint)
{
	var oLngLat = oPoint instanceof Array ? (new MLngLat(oPoint[0],oPoint[1])) : oPoint;
	return oLngLat;
}

function getLngLats(strCoords)
{
	var strSet = strCoords.split(",");

	var arr = new Array();
	for(var i=0; i<strSet.length; i+=2)
	{
	　　arr.push(new MLngLat(strSet[i],strSet[i+1]));
	}
	var oPints = new MLngLats(arr);
	return oPints;
}

	//-创建地图-
function CreateMap(idDiv, oPoint) 
{
	var mapoption = new MMapOptions(); 
		mapoption.toolbar = MConstants.ROUND; //设置地图初始化工具条，ROUND:新版圆工具条 
		mapoption.overviewMap = MConstants.SHOW; //设置鹰眼地图的状态，SHOW:显示，HIDE:隐藏（默认） 
		mapoption.scale = MConstants.SHOW; //设置地图初始化比例尺状态，SHOW:显示（默认），HIDE:隐藏。 
		mapoption.zoom = 13;//要加载的地图的缩放级别 
		mapoption.center = getLngLat(oPoint);//要加载的地图的中心点经纬度坐标 
		mapoption.language = MConstants.MAP_CN;//设置地图类型，MAP_CN:中文地图（默认），MAP_EN:英文地图 
		mapoption.fullScreenButton = MConstants.HIDE;//设置是否显示全屏按钮，SHOW:显示（默认），HIDE:隐藏 
		mapoption.centerCross = MConstants.SHOW;//设置是否在地图上显示中心十字,SHOW:显示（默认），HIDE:隐藏 
		mapoption.toolbarPos=new MPoint(20,20); //设置工具条在地图上的显示位置 
		mapoption.mapComButton = MConstants.SHOW_ST;	//MConstants.SHOW_NO;
		mapoption.isQuickInit=true;				//快速出图

    var oMap = new MMap(idDiv, mapoption); //地图初始化 
	return oMap;
}

	//-已知坐标点，标记到图上-
function CreateMark(oMap, oPoint, title, demo)
{  
    var markerOption = new MMarkerOptions(); 
		markerOption.imageUrl="http://code.mapabc.com/images/lan_1.png"; 
		markerOption.picAgent=false; 
		markerOption.imageAlign=MConstants.BOTTOM_CENTER; 
		markerOption.canShowTip= true; 
		markerOption.isEditable = true;//是否可以拖动
		markerOption.isDraggable = true;//是否可以拖动

	function addFlashTip()
	{   	
		var tipOption=new MTipOptions();   
		var fontstyle=new MFontStyle(); 
			fontstyle.size=14; 
			fontstyle.color=0xFF0066; 
			fontstyle.bold=false; 
		var fontstyle1=new MFontStyle(); 
			fontstyle1.size=20; 
			fontstyle1.color=0xFF0066;//内容字体颜色无效 
			fontstyle1.bold=true;   

		tipOption.title=title?title:"我"; 
		tipOption.titleFontStyle=fontstyle; 
		tipOption.content=demo?demo:"这是我！不服？单挑!"; 
		tipOption.contentFontStyle=fontstyle1; 
		tipOption.roundRectSize=20;//tip矩形圆边长度 
		tipOption.tipType=MConstants.FLASH_BUBBLE_TIP; 
		tipOption.hasShadow=true;   

		return tipOption;
	}
	var tipOption = addFlashTip(); 
    markerOption.tipOption = tipOption; 

    var oMark = new MMarker(getLngLat(oPoint), markerOption); 
		oMark.id="marker01"; 
		oMap.addOverlay(oMark, true) ; 

	return oMark;
}

	//-更新mark位置-
function UpdateMarkPnt(oPoint, title, demo) 
{
	m_oMap.removeOverlay(m_oMark);
	m_oMark = CreateMark(m_oMap, oPoint, title, demo);
/*
	if(title)
	{
		m_oMark.option.tipOption.title = title;
		if(demo)
			m_oMark.option.tipOption.content = demo;
		m_oMap.updateOverlay(m_oMark);
	}
	var oNewLat = new MLngLat(oPoint[0],oPoint[1]);
	m_oMap.markerMoveTo(m_oMark.id, oNewLat);
	m_oMap.setCenter(oNewLat);
*/
}

/*---------------------------------------------
				<<地址定位>>
1) 如果是完整的地址名，到了门牌号的，用新版
2) 如果是什么街，什么路的，用老版的可以定位
---------------------------------------------*/
//根据地址查询,老的方式
function SearchAddress_Old(fnCallback, strAddress, strCityName) 
{
	//-设置查询参数-
	var oAddressParam = new MAddress();
	oAddressParam.setId("0");
	oAddressParam.setCity(strCityName);//"北京"
	oAddressParam.setAddress(strAddress); 
		
	//-开始查询-
	var arr = new Array();
		arr.push(oAddressParam);
	var oSearchObj = new MGeoCode();
		oSearchObj.setCallbackFunction(fnCallback);
		oSearchObj.geocoding(arr);
}

//根据地址查询,新的方式，strAddress中已经包含了城市名称
function SearchAddress_new(fnCallback, strAddress) 
{
	var opt = new MGeoCodeSearchOptions(); 
	var mls = new MGeoCodeSearch();   
		mls.setCallbackFunction(fnCallback); 
		mls.addressToGeocode(strAddress,opt); 
}

//综合查询，strAddress中没有包含城市名称
function SearchAddress_All(fnCallback, strAddress, strCityName)
{
	if (strAddress == "") 
	{
		alert("请输入地址!");
		return ;
	}

	//-获取地址类型 0: old 1:new -
	function sGetAddressType()
	{
		var type = 1;
		var strLast = strAddress.substr(strAddress.length-1,1);
		if(strLast=='号')
			type = 1;

		return type;
	}

	function cmd_AddressMatch_Callback_old(data) 
	{
		var x = data.getLongitude();
		var y = data.getLatitude();
		var grade = data.getGrade();
		if (grade == "0") 
		{
			alert("对不起,没有找到该地址!");
			return;
		}

		fnCallback(x, y, grade, strAddress);	
	}

	function cmd_AddressMatch_Callback_new(data) 
	{	 
		if(data.error_message != null)
		{
			alert("错误:" + data.error_message);
			return;
		}

		if(data.message!="ok")
		{
			alert("查询失败，网络繁忙!");
			return;
		}

		if(data.count==0)
		{
			alert("没有找到对应数据!");
			return;
		}

		fnCallback(data.list[0].x, data.list[0].y, data.list[0].level, data.list[0].name);
	}

	var nAddressType=sGetAddressType();
	if(nAddressType==0)
	{
		SearchAddress_Old(cmd_AddressMatch_Callback_old, strAddress, strCityName);
	}
	else
	{
		var nPos = strAddress.indexOf("市");
		if(nPos<0 || nPos>4)	//如果没有市,添加当前市缩小范围
		{
			strAddress = strCityName + strAddress;
		}

		SearchAddress_new(cmd_AddressMatch_Callback_new, strAddress);
	}
}


/*---------------------------------------------
				<<坐标查找>>
1) 坐标查找地标
2) 坐标查找类型数据
---------------------------------------------*/
function SearchXzxqName(fnCallback, oPoint)
{
	var poixy = getLngLat(oPoint);
	//-设置查询参数-
	var msso = new MSpatialSearchOptions();
		msso.dataType = "地名地址信息;行政地名;村庄级地名";
		msso.buffer = 10;
		msso.range = 10;
		msso.poiNumber = 1;
		msso.roadLevel = 3;
		msso.sign = 1;  
		
	//-开始查询-
	var oSearchObj = new MSpatialSearch();
		oSearchObj.setCallbackFunction(fnCallback);
		oSearchObj.geocodeToAddress(poixy, msso); 
}

function PoiSearch(fnCallback, city, keyword, oPoint, dataType)
{		
	var poixy = getLngLat(oPoint);
	var opt = new MPoiSearchOptions(); 
		opt.recordsPerPage = 200;	//每页返回数据量，默认为10   
		opt.pageNum = 1;			//当前页数。 
		opt.dataType = dataType?dataType:"";	//数据类别，该处为分词查询，只需要相关行业关键字即可 
		opt.dataSources = MConstants.DS_BASE_ENPOI;//数据源，基础+企业地标数据库（默认） 
		opt.range = 1000;			//查询范围，单位为米，默认值为3000 
		opt.naviFlag = 1;			//周边查询返回结果是否按导航距离排序0,不按导航距离排序（默认）1，按导航距离排序。 

	var MSearch = new MPoiSearch(); 	
	MSearch.setCallbackFunction(fnCallback); 
	MSearch.poiSearchByCenPoi(poixy, keyword, city, opt); 
}

/*---------------------------------------------
				<<范围查找>>
1) 
2) 
---------------------------------------------*/
function RangeSearch(fnCallback, keyword, oPoints, dataType)
{		
	var opt = new MPoiSearchOptions(); 
		opt.recordsPerPage = 400;	//每页返回数据量，默认为10   
		opt.pageNum = 1;			//当前页数。 
		opt.dataType = dataType?dataType:"";	//数据类别，该处为分词查询，只需要相关行业关键字即可 
		opt.dataSources = MConstants.DS_BASE_ENPOI;//数据源，基础+企业地标数据库（默认） 
	
	var MSearch = new MPoiSearch(); 	
	MSearch.setCallbackFunction(fnCallback); 
	MSearch.poiSearchByRegion(MOverlay.TYPE_POLYGON, oPoints, keyword, opt); 
}

/*---------------------------------------------
				<<关键字查找>>
2) 目前指定餐饮服务
---------------------------------------------*/
function KeySearch(funcPoiSearch_Callback, city, keyword, dataType)
{		
	var opt = new MPoiSearchOptions(); 
		opt.recordsPerPage = 200;	//每页返回数据量，默认为10   
		opt.pageNum = 1;			//当前页数。 
		opt.dataType = dataType?dataType:"";	//数据类别，该处为分词查询，只需要相关行业关键字即可 
		opt.dataSources = MConstants.DS_BASE_ENPOI;//数据源，基础+企业地标数据库（默认） 

	var MSearch = new MPoiSearch(); 
	MSearch.setCallbackFunction(funcPoiSearch_Callback); 
	MSearch.poiSearchByKeywords(keyword, city, opt); 
}
